#pragma GCC optimize(2)
#include <iostream>
#include <queue>
#include <map>
#include <unordered_map>
#include <vector>
#include <algorithm>
#include <cmath>
#include <string>
#include <cstring>
#include <set>
#include <unordered_set>
#define IOS ios::sync_with_stdio(false), cin.tie(0), cout.tie(0)
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
typedef pair<int,int> pii;
const int N=1010, mod=19650827;
int a[N];
int f[N][N][2];
int main()
{
	IOS;
	int n;
	cin>>n;
	
	for(int i=1;i<=n;i++) cin>>a[i];
	
	if(n==1)
	{
		cout<<1;
		return 0;
	}
	
	for(int i=1;i+1<=n;i++)
	{
		if(a[i]<a[i+1])
		{
			f[i][i+1][0]=f[i][i+1][1]=1;
		}
	}
	
//	for(int i=1;i+1<=n;i++) cout<<f[i][i+1][0]<<' '<<f[i][i+1][1]<<endl;
	
	for(int len=3;len<=n;len++)
	{
		for(int l=1;l+len-1<=n;l++)
		{
			int r=l+len-1;
			f[l][r][1]=f[l][r-1][1]*(a[r]>a[r-1])+f[l][r-1][0]*(a[r]>a[l]);
			f[l][r][1]%=mod;
			f[l][r][0]=f[l+1][r][0]*(a[l]<a[l+1])+f[l+1][r][1]*(a[l]<a[r]);
			f[l][r][0]%=mod;
		}
	}
//	cout<<f[1][9][0]<<' '<<f[1][9][1]<<endl;;
//	cout<<f[1][4]<<endl;
	int ans=0;
	ans=f[1][n][0]+f[1][n][1];
	ans%=mod;
	cout<<ans;

	return 0;
}

